package Modelo;

import Controlador.Arbitro;
import Controlador.PeritoColision;
import java.awt.Color;
import java.io.Serializable;
import java.util.Random;

abstract public class Movil  extends Figuras implements Serializable {
   
    
        private static final long serialVersionUID = 12L;
	Integer checkpoint;
        public PeritoColision perito;
        public Arbitro arbitro;
        
        public Integer dx;
        public Integer dy;
        public int k,c, signo;
        
        public Movil(Integer id0, Integer x0,Integer y0,Integer w0,Integer h0,Color c,Integer vida, Boolean estado){
            super(id0, x0,y0,h0,w0,c,vida,estado);
            checkpoint=0;
        }
        
        public void addPerito (PeritoColision p){
            //se recibe como parametro en vez de instanciar aqui 
            // para que sea el mismo objeto para todos los moviles
            perito = p;
        }
        
         public void addArbitro (Arbitro a){
            //se recibe como parametro en vez de instanciar aqui 
            // para que sea el mismo objeto para todos los moviles
            arbitro = a;
        }
        
        
            public void arriba(){
            this.yAnterior = y;
            y -= dy;
        }

         public void abajo(){
            this.yAnterior = y;
            y += dy;
        }
        
       public void abajoDerecha(){
          this.abajo();
          this.derecha();
       }
       
       public void abajoIzquierda(){
          this.abajo();
          this.izquierda();
       }
       
       public void arribaDerecha(){
          this.arriba();
          this.derecha();
       }
       
       public void arribaIzquierda(){
          this.arriba();
          this.izquierda();
       }  
         
        public void derecha(){
            this.xAnterior = x;
            x += dx;
        }
        
        public void izquierda(){
            this.xAnterior = x;
            x -= dx;
        }
        
        
        public int SentidoAleatorio(){
               //Ahora necesito que cambien de sentido aleatoriamente
            Random rnd = new Random();

            int signo = (int)(rnd.nextDouble() * 10.0);

            while(signo<5){    //forma barata de no tener if. sugerencias?
            signo=-1;
            break;
            }
            while(signo>=5){
            signo=1;
            break;
            }
            return signo;
        }
        
        
        
        
    public void moverse(Integer x0,Integer y0){

    try {   
            x = x0;
            y = y0;
           perito.checkCollisions((Autito) this);
        } catch (Exception ex) {
        }
    }
     
    
        
        
    @Override
    public void colision(Autito movil) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void colision(Pared pared) {
      System.out.println("Soy el poli" + this.id.toString() + " y me choque con " + pared.getID()  );
        
    }

    @Override
    public void colision(Base base) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void colision(Destino destino) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

     @Override
    public void colision(Policia policia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

     @Override
    public void colision(Semaforo s) {
        throw new UnsupportedOperationException("Not supported yet.");
    }


    public void loseLife(){
        this.vida--;
    }


}
